/* Caminho da ambulancia 14/05/2007
 *
 * Marcel Maximo	RA: 41051267
 * Engenharia da Computacao Diurno
 *
 */

#include <stdio.h>
#include <stdlib.h>
#define MAX 101
#define BRANCO 0
#define PRETO 1
#define CINZA 2

void dfs(int mapa[MAX][MAX],int origem, int n);
void dfsVisit(int mapa[MAX][MAX],int origem, int n, int caminho[], int fim, int cor[]);
inline void print_caminhos(int pilha[], int top);

int main(void) {
	int n, i,j,nTeste=0;

	while(1) {
		scanf("%i",&n);
		if(!n) break;
		n++;  // 1 ate n, inclusive
		int mapa[MAX][MAX];

		for(i=1;i<n;i++)
			for(j=1;j<n;j++)
				mapa[i][j]=0;

		do {
			scanf("%i %i",&i, &j);
			mapa[i][j]=1;
		}while(i!=0 && j!=0);

		printf("\nTeste %i\n",++nTeste);
		dfs(mapa,1,n);

	} // while

	return 0;
}//main


void dfs(int mapa[MAX][MAX],int origem, int n) {
	int fim=1,i=0;
	int caminho[n],cor[n];
	for(i=1;i<n;i++) {
		caminho[i]=cor[i]=0;
	}
	dfsVisit(mapa,origem,n,caminho, fim,cor);
}

void dfsVisit(int mapa[MAX][MAX],int origem, int n, int caminho[], int fim, int cor[]){
	int i;
	caminho[fim++]=origem;
	cor[origem]=CINZA;
	if(fim>=3)
		print_caminhos(caminho,fim);
	for(i=1;i<n;i++) {
		if( mapa[origem][i] && cor[i]==BRANCO){ //&& !contem(caminho,i,fim) ) {
			dfsVisit(mapa,i,n,caminho,fim,cor);
		}
	}
	cor[origem]=BRANCO;
} // dfsVisit

inline void print_caminhos(int vetor[], int n) {
	int i=1;
	while(i<n )
		printf("%i ", vetor[i++]);
	printf("\n");
}